﻿using System;
using Company.BLL;
using Company.BLL.KDT.GC;
using Company.BLL.Utils;
using Company.BLL.DuLieuChuan;
using Janus.Windows.GridEX;
using System.Windows.Forms;

namespace Company.Interface.KDT.GC
{
    public partial class NguyenPhuLieuGCEditForm : BaseForm
    {
        public HopDong hongdong = new HopDong();        
        public NguyenPhuLieuCollection nplCollection = new NguyenPhuLieuCollection();
        public NguyenPhuLieu npl = new NguyenPhuLieu();
        public bool isAdd = true;//luu tru thong tin cua them moi hay sua chua
        public bool isUpdate = false;//luu truu thong tin la da cap nhat du lieu vao csdl chua
        private int STTHang = 0;
        public bool isBrower = false;
        public NguyenPhuLieuGCEditForm()
        {
            InitializeComponent();
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }


        private void NguyenPhuLieuGCEditForm_Load(object sender, EventArgs e)
        {
            if (!isBrower)
            {
                txtMa.Focus();
                this._DonViTinh = DonViTinh.SelectAll();
                cbDonViTinh.DataSource = this._DonViTinh;
                cbDonViTinh.DisplayMember = "Ten";
                cbDonViTinh.ValueMember = "ID";
                cbDonViTinh.SelectedValue = GlobalSettings.DVT_MAC_DINH;
                if (!isAdd)
                {
                    btnAdd.Text = "Sửa";
                    txtMa.Text = npl.Ma.Trim();
                    txtMaHS.Text = npl.MaHS.Trim();
                    txtSoLuong.Text = npl.SoLuongDangKy.ToString();
                    txtTen.Text = npl.Ten.Trim();
                    cbDonViTinh.SelectedValue = npl.DVT_ID;
                }
                if (hongdong.TrangThaiXuLy == TrangThaiXuLy.DA_DUYET)
                {
                    btnAdd.Enabled = false;
                    uiButton1.Enabled = false;
                    return;
                }
                foreach (NguyenPhuLieu s in nplCollection)
                {
                    if (s.STTHang > STTHang)
                        STTHang = s.STTHang;
                }
            }
            else
            {
                uiGroupBox2.Visible = false;
                dgList.AllowDelete = Janus.Windows.GridEX.InheritableBoolean.False;
                nplCollection = NguyenPhuLieu.SelectCollectionBy_HopDong_ID(hongdong.ID);
                this.Width = dgList.Width;
                this.Height = dgList.Height;
                btnAdd.Visible = false;
                btnClose.Visible = false;
                uiButton1.Visible = false;
            }
            dgList.DataSource = nplCollection;
        }

        private void txtMaHS_Leave(object sender, EventArgs e)
        {
            if (!MaHS.Validate(txtMaHS.Text, 10))
            {
                error.SetIconPadding(txtMaHS, -8);
                error.SetError(txtMaHS, "Mã số HS không hợp lệ.");
                txtMaHS.Focus();
            }
           
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            cvError.Validate();
            if (!cvError.IsValid) return;
            {
                if (!MaHS.Validate(txtMaHS.Text.Trim(), 10))
                {
                    error.SetIconPadding(txtMaHS, -8);
                    error.SetError(txtMaHS, "Mã số HS không hợp lệ.");
                    return;
                }
                if (Convert.ToDecimal(txtSoLuong.Text) == 0)
                {
                    error.SetError(txtSoLuong, "Số lượng phải lớn hơn 0.");
                    txtSoLuong.Focus();
                    return;
                }                             
                if (txtMaHS.Text.Trim().Length !=10)
                {
                    txtMaHS.Focus();
                    error.SetError(txtMaHS, "Mã HS phải có 10 số.");
                    return;
                }
              
                checkExitsNPLAndSTTHang();
            }
        }
        private void reset()
        {
            txtMa.Text = "";
            txtMaHS.Text = "";
            txtSoLuong.Text = "0";          
            txtTen.Text = "";
            dgList.Refetch();            
            isAdd = true;
            npl = new NguyenPhuLieu();
            txtMa.Focus();
            btnAdd.Text = "Thêm";
        }
        private void checkExitsNPLAndSTTHang()
        {
            if (!isAdd)
                nplCollection.Remove(npl);
            else//lay thong tin tao moi
            {                
                npl.SoLuongDangKy = Convert.ToDecimal(txtSoLuong.Text);
                npl.Ten = txtTen.Text.Trim();
                npl.Ma = txtMa.Text.Trim();
                npl.MaHS = txtMaHS.Text.Trim();
                npl.DVT_ID = cbDonViTinh.SelectedValue.ToString();
                npl.HopDong_ID = hongdong.ID;
                npl.STTHang=STTHang+1;
            }
            //kiem tra co trung Stt hang ko           
            foreach (NguyenPhuLieu nguyenPL in nplCollection)
            {
                if (nguyenPL.checkExits(txtMa.Text.Trim()))
                {
                    if (isAdd)//cap nhat
                    {
                        string st = ShowMessage("Đã có nguyên phụ liệu này trong danh sách. Bạn có muốn cập nhật lại không?", true);
                        if (st == "Yes")
                        {
                            nguyenPL.SoLuongDangKy = Convert.ToDecimal(txtSoLuong.Text);
                            nguyenPL.Ten = txtTen.Text.Trim();
                            nguyenPL.Ma = txtMa.Text.Trim();
                            nguyenPL.MaHS = txtMaHS.Text.Trim();
                            nguyenPL.DVT_ID = cbDonViTinh.SelectedValue.ToString();                       
                            reset();                          
                            return ;
                        }
                        else
                        {
                            npl = new NguyenPhuLieu();
                            txtMa.Focus();
                            return ;
                        }
                    }
                    else
                    {
                        ShowMessage("Đã có nguyên phụ liệu này trong danh sách.", false);
                        txtMa.Focus();
                        nplCollection.Add(npl);   
                        return;
                    }
                }                                  
            }
            if (isAdd)
            {
                nplCollection.Add(npl);
                STTHang++;
                reset();
            }
            else//cap nhat
            {
                npl.SoLuongDangKy = Convert.ToDecimal(txtSoLuong.Text);
                npl.Ten = txtTen.Text.Trim();
                npl.Ma = txtMa.Text.Trim();
                npl.MaHS = txtMaHS.Text.Trim();
                npl.DVT_ID = cbDonViTinh.SelectedValue.ToString();
                npl.HopDong_ID = hongdong.ID;
                nplCollection.Add(npl);   
                reset();
                btnAdd.Text = "Thêm";               
                return ;
            }            
        }

        private void dgList_DeletingRecord(object sender, Janus.Windows.GridEX.RowActionCancelEventArgs e)
        {
            if (hongdong.TrangThaiXuLy == TrangThaiXuLy.DA_DUYET)
            {                             
                ShowMessage("Hợp đồng đã duyệt chính thức. Không được chỉnh sửa",false);
                e.Cancel = true;
                return;        
            }
            if (e.Row.RowType == RowType.Record)
            {
                if (ShowMessage("Bạn có muốn xóa nguyên phụ liệu này không?", true) == "Yes")
                {                    
                    NguyenPhuLieu npl1 = new NguyenPhuLieu();
                    npl1.ID = (long)Convert.ToInt64(e.Row.Cells[1].Text);
                    if (npl1.ID > 0)
                    {
                        npl1.Delete();
                        isUpdate = true;
                    }
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }

        private void uiButton1_Click(object sender, EventArgs e)
        {
            try
            {
                this.Cursor = Cursors.WaitCursor;
                if (hongdong.ID <= 0)
                {
                    ShowMessage("Phải lưu trữ hợp đồng trước", false);
                }
                else
                {
                    if (hongdong.TrangThaiXuLy == TrangThaiXuLy.DA_DUYET)
                    {
                        ShowMessage("Hợp đồng đã duyệt chính thức. Không được chỉnh sửa", false);
                        return;
                    }
                    int i = 1;
                    foreach (NguyenPhuLieu s in nplCollection)
                    {
                        s.STTHang = i++;
                    }
                    if (npl.InsertUpdate(nplCollection))
                    {
                        //nplCollection = NguyenPhuLieu.SelectCollectionBy_HopDong_ID(hongdong.ID);
                        //reset();
                        isUpdate = true;
                        ShowMessage("Đã cập nhật thành công", false);
                        this.Close();
                    }
                    else
                        ShowMessage("Có lỗi khi cập nhật", false);
                }
            }
            catch (Exception ex)
            {
                ShowMessage("Có lỗi :" + ex.Message, false);
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }
        }

        private void NguyenPhuLieuGCEditForm_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
        {
            if (hongdong.ID > 0 && !isUpdate)
            {
                if (ShowMessage("Có muốn lưu lại những thay đổi trong nhóm sản phẩm không", true) == "Yes")
                {
                    uiButton1_Click(null, null);
                }
            }
        }

        private void dgList_RowDoubleClick(object sender, Janus.Windows.GridEX.RowActionEventArgs e)
        {
            npl.Ma = e.Row.Cells[2].Text.Trim();
            npl.Ten = e.Row.Cells[3].Text.Trim();
            npl.MaHS = e.Row.Cells[4].Text.Trim();
            npl.DVT_ID = e.Row.Cells[5].Text;
            npl.SoLuongDangKy = Convert.ToDecimal(e.Row.Cells[7].Text);
            npl.ID = (long)Convert.ToDecimal(e.Row.Cells[1].Text);
            npl.HopDong_ID = hongdong.ID;
            if (!isBrower)
            {
                btnAdd.Text = "Sửa";
                txtMa.Text = npl.Ma.Trim();
                txtMaHS.Text = npl.MaHS.Trim();
                txtSoLuong.Text = npl.SoLuongDangKy.ToString();
                txtTen.Text = npl.Ten.Trim();
                cbDonViTinh.SelectedValue = npl.DVT_ID;
                isAdd = false;
            }
            else
            {
                this.Close();
            }
        }

        private void dgList_LoadingRow(object sender, RowLoadEventArgs e)
        {
            e.Row.Cells[6].Text = this.DonViTinh_GetName(e.Row.Cells[5].Value).Trim();
        }
    }
}